# -*- coding:utf-8 -*-
# 爬虫：
# 题目：var1 = "大家好，我叫爱丽丝，我的身份证号码是：32211419981010021x，不是32211419981300101x"
# 要求：匹配出正确的身份证号：32211419981010021x
# 使用findall进行匹配
import re

var1 = "大家好，我叫爱丽丝，我的身份证号码是：32211419981010031x，不是32211419981300101x"

# 方法一：简单拿取
number = re.findall(r"\d{17}\w", var1)[0]
print(f"正确的身份证号码是：{number}")


# 方法二：  根据实际的身份证情况，具体分组拿取
# 如果findall中有组，只会获取组里面的内容
# 第一组获取前六位     (\d{6})
# 分析：通过查阅资料身份证，发行与1984年
# 第二组获取年份  1984-1999 |2000 - 2019 | 2020 - 2023    （198[4-9]|199\d|20[0-1]\d|202[0-3]）
# 第三组获取月份  01 -- 09  10 - 12     (0\d|1[0-2])
# 第四组获取日期   01 -- 09  10 -- 29  30 -- 31      (0[1-9]|[1-2]\d|3[0-1])
r1 = re.findall(r"(\d{6})(198[4-9]|199\d|20[0-1]\d|202[0-3])(0\d|1[0-2])(0[1-9]|[1-2]\d|3[0-1])(\d{3}[0-9x])", var1)[0]
print('正确的身份证号码是：' + "".join(r1))
